/* RT-Thread config file */
#ifndef __RTTHREAD_CFG_H__
#define __RTTHREAD_CFG_H__

/****************************************
*               kernel
*****************************************/
/* RT_NAME_MAX*/
#define RT_NAME_MAX    8

/* RT_ALIGN_SIZE*/
#define RT_ALIGN_SIZE   4

/* PRIORITY_MAX */
#define RT_THREAD_PRIORITY_MAX  32

/* Tick per Second */
#define RT_TICK_PER_SECOND  100

#define RT_SLEEP_RATIO  (1000/RT_TICK_PER_SECOND)

#define IDLE_THREAD_STACK_SIZE     1024

/* Using Software Timer */
/* #define RT_USING_TIMER_SOFT */
#define RT_TIMER_THREAD_PRIO        4
#define RT_TIMER_THREAD_STACK_SIZE  512

/****************************************
*               Debug
*****************************************/
/* SECTION: RT_DEBUG */
/* Thread Debug */
#define RT_DEBUG
#define RT_DEBUG_INIT    1
#define RT_USING_OVERFLOW_CHECK

/* Using Hook */
// #define RT_USING_HOOK

/****************************************
*               IPC
*****************************************/
/* SECTION: IPC */
/* Using Semaphore*/
#define RT_USING_SEMAPHORE

/* Using Mutex */
#define RT_USING_MUTEX

/* Using Event */
// #define RT_USING_EVENT

/* Using MailBox */
// #define RT_USING_MAILBOX

/* Using Message Queue */
// #define RT_USING_MESSAGEQUEUE

/****************************************
*               Memory
*****************************************/
/* SECTION: Memory Management */
/* Using Memory Pool Management*/
// #define RT_USING_MEMPOOL

/* Using Dynamic Heap Management */
#define RT_USING_HEAP
// #define RT_USING_MEMHEAP
/* Using Small MM */
#define RT_USING_SMALL_MEM

#define RT_USING_COMPONENTS_INIT

/****************************************
*           Device IO
*****************************************/
/* SECTION: Device System */
/* Using Device System */
#define RT_USING_DEVICE
#define RT_USING_DEVICE_IPC

/* Using serial framework */
#define RT_USING_SERIAL

/* Using GPIO pin framework */
#define RT_USING_PIN
#define RT_USING_GPIO_LED
#define RT_USING_GPIO_KEY
#define RT_USING_GPIO_MISC  //some other gpio funtion

/* Using RTC framework */
#define RT_USING_RTC

/* Using I2C framework */
#define RT_USING_I2C
//is or not use i2c_soft
#define RT_USING_I2C_BITOPS

/* Using SPI framework */
#define RT_USING_SPI
//use spi flash w25q128
#define RT_USING_W25QXX

#define RT_USING_SDCARD

/* Using Hardware Timer framework */
//#define RT_USING_HWTIMER

/* Using 1_wire driver */
#define RT_USING_ONE_WIRE
#define RT_USING_DS18B20

/* Using ADC driver */
#define RT_USING_ADC

/* Using infrared driver */
#define RT_USING_INFRARED

/****************************************
*           console and finsh
*****************************************/
/* SECTION: Console options */
#define RT_USING_CONSOLE
/* the buffer size of console*/
#define RT_CONSOLEBUF_SIZE  128

/* SECTION: finsh, a C-Express shell */
#define RT_USING_FINSH
/* Using symbol table */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION

#define FINSH_USING_MSH

/****************************************
*           filesystem
*****************************************/
/* SECTION: device filesystem */
/* Using Device file system */
#define RT_USING_DFS
/* the max number of mounted filesystem */
#define DFS_FILESYSTEMS_MAX         2
/* the max number of opened files       */
#define DFS_FD_MAX                  4

/* Using ELM FATFS */
#define RT_USING_DFS_ELMFAT
#define RT_DFS_ELM_WORD_ACCESS
/* Reentrancy (thread safe) of the FatFs module.  */
#define RT_DFS_ELM_REENTRANT
/* Number of volumes (logical drives) to be used. */
#define RT_DFS_ELM_DRIVES           2
/* #define RT_DFS_ELM_USE_LFN           1 */
#define RT_DFS_ELM_MAX_LFN          255
/* Maximum sector size to be handled. */
#define RT_DFS_ELM_MAX_SECTOR_SIZE  4096

/* 使用当前工作目录 不必使用绝对路径 */
#define DFS_USING_WORKDIR

/* Using ROM file system */
// #define RT_USING_DFS_ROMFS

/****************************************
*           socket
*****************************************/
/* SECTION: lwip, a lighwight TCP/IP protocol stack */
/* #define RT_USING_LWIP */
/* LwIP uses RT-Thread Memory Management */
#define RT_LWIP_USING_RT_MEM
/* Enable ICMP protocol*/
#define RT_LWIP_ICMP
/* Enable UDP protocol*/
#define RT_LWIP_UDP
/* Enable TCP protocol*/
#define RT_LWIP_TCP
/* Enable DNS */
#define RT_LWIP_DNS

/* the number of simulatenously active TCP connections*/
#define RT_LWIP_TCP_PCB_NUM 5
/* ip address of target*/
#define RT_LWIP_IPADDR0 192
#define RT_LWIP_IPADDR1 168
#define RT_LWIP_IPADDR2 1
#define RT_LWIP_IPADDR3 201

/* gateway address of target*/
#define RT_LWIP_GWADDR0 192
#define RT_LWIP_GWADDR1 168
#define RT_LWIP_GWADDR2 1
#define RT_LWIP_GWADDR3 1

/* mask address of target*/
#define RT_LWIP_MSKADDR0    255
#define RT_LWIP_MSKADDR1    255
#define RT_LWIP_MSKADDR2    255
#define RT_LWIP_MSKADDR3    0

/* tcp thread options */
#define RT_LWIP_TCPTHREAD_PRIORITY      12
#define RT_LWIP_TCPTHREAD_MBOX_SIZE     4
#define RT_LWIP_TCPTHREAD_STACKSIZE     1024

/* ethernet if thread options */
#define RT_LWIP_ETHTHREAD_PRIORITY      15
#define RT_LWIP_ETHTHREAD_MBOX_SIZE     4
#define RT_LWIP_ETHTHREAD_STACKSIZE     512

/* TCP sender buffer space */
#define RT_LWIP_TCP_SND_BUF 8192
/* TCP receive window. */
#define RT_LWIP_TCP_WND     8192

#define CHECKSUM_CHECK_TCP              0
#define CHECKSUM_CHECK_IP               0
#define CHECKSUM_CHECK_UDP              0

#define CHECKSUM_GEN_TCP                0
#define CHECKSUM_GEN_IP                 0
#define CHECKSUM_GEN_UDP                0

/* RT_GDB_STUB */
//#define RT_USING_GDB

#endif
